

// #include <tenacitas.log.core/logger.h>
// #include <tenacitas.log.core/level.h>

// #include <iostream>
// #include <cstdint>

// #include "runtest.h"

// namespace tenacitas {
//     namespace log {
//         namespace core {
//             namespace t000 {
//                 struct cout_media {

//                     cout_media(cout_media &&) {}

//                     cout_media(const thread_id & p_thread_id)
//                         : m_thread_id(p_thread_id){}
                    
//                     rc<> new_line(level p_level,
//                                   uint64_t p_nano,
//                                   const char * p_file,
//                                   int64_t p_line) {
//                         std::cerr << "\n"
//                                   << p_level.str() << "|"
//                                   << p_nano << "|"
//                                   << m_thread_id << "|"
//                                   << p_file << "|"
//                                   << p_line;
//                         return rc<>();
//                     }


//                     template <typename t_data>
//                     rc<> write(const t_data & p_data) {
//                         std::cerr << "|" << p_data;
//                         return rc<>();
//                     }

//                     template <typename t_data>
//                     rc<> write( t_data && p_data) {
//                         std::cerr << "|" << p_data;
//                         return rc<>();
//                     }

//                     cout_media & operator=(cout_media && p_media) {
//                         m_thread_id = std::move(p_media.m_thread_id);
//                         return *this;
//                     }

//                 private:
//                     thread_id m_thread_id;
                    
//                 };
                
//                 struct supplier {
//                     typedef cout_media media;
//                 };
                
//                 typedef core::logger<supplier> logger;

//                 static bool test1() {
//                     std::cerr << "\n+++ t000::test1" << std::endl;
//                     logger _logger;
//                     log_error(l_logger) << "f1";
//                     return true;
//                 }
                
//                 static bool test1() {
                    
//                     bool operator()() {
//                         logger l_logger2;
//                         log_error(l_logger2) << "error here";
//                         return true;
//                     }
//                 };
                

//                 struct t3 {
                    
//                     bool operator()() {
//                         class1 l_class;
//                         l_class.f1();
//                         l_class.f2();
                    
//                         return true;
//                     }
//                 };
                

//                 struct t4 {
                    
//                     bool operator()() {
                        
//                         logger l_logger4;
//                         log_error(l_logger4) << "another error here";
//                         l_logger4.set_level(level::trace);
//                         log_trace(l_logger4) << "tracing";
//                         return true;
//                     }
//                 };
                

//                 struct t5 {
//                     bool operator()() {
//                         logger l_logger5(level::debug);
//                         log_error(l_logger5) << "one more error here";
//                         log_trace(l_logger5) << "tracing again";
//                         log_debug(l_logger5) << "debugging";
//                         return true;
//                     }
//                 };
                
                
                
                
//                 static bool run() {
// //                    if (!t1()()) { std::cerr << "t1" << std::endl; return false;}
//                     if (!t2()()) { std::cerr << "t2" << std::endl; return false;}
// //                    if (!t3()()) { std::cerr << "t3" << std::endl; return false;}
//                     if (!t4()()) { std::cerr << "t4" << std::endl; return false;}
//                     // if (!t5()()) { std::cerr << "t5" << std::endl; return false;}
//                     return true;
//                 }
//             }
//         }
//     }
// }


